package com.example.springboothello.conf;

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        // 定义日期格式的正则表达式
        String[] dateFormats = {
                "yyyy-MM",
                "yyyy-MM-dd",
                "yyyy-MM-dd HH:mm",
                "yyyy-MM-dd HH:mm:ss",
                "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
        };

        for (String dateFormat : dateFormats) {
            if (matchesFormat(source, dateFormat)) {
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
                    return sdf.parse(source);
                } catch (ParseException ignored) {
                    // 如果解析失败，尝试下一个格式
                }
            }
        }
        // 如果所有格式都不匹配，返回null或者抛出异常，具体取决于你的需求
        return null;
    }

    // 使用正则表达式判断日期字符串是否匹配给定的格式
    private boolean matchesFormat(String source, String dateFormat) {
        Pattern pattern = Pattern.compile(dateFormat);
        Matcher matcher = pattern.matcher(source);
        return matcher.matches();
    }
}
